{
if (objtype == OSTREE_OBJECT_TYPE_COMMIT)
{
+ /* mark as partial to ensure we scan the commit below */
if (!write_commitpartial_for (pull_data, tmp_checksum, error))
return FALSE;
}
return FALSE;
if (!localcache_repo_has_obj)
continue;
+ if (objtype == OSTREE_OBJECT_TYPE_COMMIT)
+ {
+ /* mark as partial to ensure we scan the commit below */
+ if (!write_commitpartial_for (pull_data, tmp_checksum, error))
+ return FALSE;
+ }
if (!ostree_repo_import_object_from_with_trust (pull_data->repo, refd_repo,
objtype, tmp_checksum,
!pull_data->is_untrusted,
setup_fake_remote_repo1 "archive"
-echo '1..1'
+echo '1..2'
cd ${test_tmpdir}
gnomerepo_url="$(cat httpd-address)/ostree/gnomerepo"
-ostree_repo_init repo --mode "archive"
+
+# Set up our local cache
ostree_repo_init repo-local --mode "archive"
-for repo in repo{,-local}; do
- ${CMD_PREFIX} ostree --repo=${repo} remote add --set=gpg-verify=false origin ${gnomerepo_url}
-done
+${CMD_PREFIX} ostree --repo=repo-local remote add --set=gpg-verify=false origin ${gnomerepo_url}
+
+init_repo() {
+ ostree_repo_init repo --mode "archive"
+ ${CMD_PREFIX} ostree --repo=repo remote add --set=gpg-verify=false origin ${gnomerepo_url}
+}
# Pull the contents to our local cache
${CMD_PREFIX} ostree --repo=repo-local pull origin main
rm files -rf
${CMD_PREFIX} ostree --repo=ostree-srv/gnomerepo checkout main files
echo anewfile > files/anewfile
-${CMD_PREFIX} ostree --repo=ostree-srv/gnomerepo commit -b main --tree=dir=files
+commit=$(${CMD_PREFIX} ostree --repo=ostree-srv/gnomerepo commit -b main --tree=dir=files)
-${CMD_PREFIX} ostree --repo=repo pull -L repo-local origin main >out.txt
+# Check that pulling a new commit of the same tree hits our cache
+rm -rf repo
+init_repo
+${CMD_PREFIX} ostree --repo=repo pull --localcache-repo repo-local origin main >out.txt
assert_file_has_content out.txt '3 metadata, 1 content objects fetched (4 meta, 5 content local)'
-echo "ok pull --reference"
+echo "ok pull --localcache-repo"
+
+# Check that pulling the same commit works as well
+rm -rf repo
+init_repo
+${CMD_PREFIX} ostree --repo=repo-local pull origin $commit
+${CMD_PREFIX} ostree --repo=repo pull -L repo-local origin main
+commit2=$(${CMD_PREFIX} ostree --repo=repo rev-parse main)
+[[ $commit == $commit2 ]]
+# and check that it's not partial
+rm -rf files
+${CMD_PREFIX} ostree --repo=repo checkout main files
+test -f files/anewfile
+echo "ok pull --localcache-repo same commit"